package com.huawei.zyb.taskManager.application.task.dto;

import com.huawei.zyb.taskManager.domain.task.valueobject.TaskPriority;
import com.huawei.zyb.taskManager.domain.task.valueobject.TaskStatus;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;

import java.util.List;

/**
 * 批量更新任务命令
 */
public class BatchUpdateTaskCommand {
    
    @NotEmpty(message = "任务ID列表不能为空")
    private List<Long> taskIds;
    
    @NotNull(message = "操作类型不能为空")
    private BatchOperationType operationType;
    
    private String assigneeId;
    private TaskStatus status;
    private TaskPriority priority;
    
    public BatchUpdateTaskCommand() {
    }
    
    public BatchUpdateTaskCommand(List<Long> taskIds, BatchOperationType operationType) {
        this.taskIds = taskIds;
        this.operationType = operationType;
    }
    
    public List<Long> getTaskIds() {
        return taskIds;
    }
    
    public void setTaskIds(List<Long> taskIds) {
        this.taskIds = taskIds;
    }
    
    public BatchOperationType getOperationType() {
        return operationType;
    }
    
    public void setOperationType(BatchOperationType operationType) {
        this.operationType = operationType;
    }
    
    public String getAssigneeId() {
        return assigneeId;
    }
    
    public void setAssigneeId(String assigneeId) {
        this.assigneeId = assigneeId;
    }
    
    public TaskStatus getStatus() {
        return status;
    }
    
    public void setStatus(TaskStatus status) {
        this.status = status;
    }
    
    public TaskPriority getPriority() {
        return priority;
    }
    
    public void setPriority(TaskPriority priority) {
        this.priority = priority;
    }
    
    /**
     * 批量操作类型枚举
     */
    public enum BatchOperationType {
        UPDATE_STATUS,
        UPDATE_ASSIGNEE,
        UPDATE_PRIORITY,
        DELETE
    }
}